export function rgbToHex(color) {
  // 匹配RGB或RGBA格式
  const rgbRegex = /^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*([\d.]+))?\)$/
  const match = color.match(rgbRegex)

  if (!match) {
    throw new Error('无效的RGB/RGBA颜色格式')
  }

  // 提取RGB值（确保在0-255范围内）
  const r = Math.max(0, Math.min(255, parseInt(match[1], 10)))
  const g = Math.max(0, Math.min(255, parseInt(match[2], 10)))
  const b = Math.max(0, Math.min(255, parseInt(match[3], 10)))
  const a = match[4] ? parseFloat(match[4]) : null // 透明度（如果有）
  // 将十进制转换为两位十六进制
  const toHex = (num) => num.toString(16).padStart(2, '0').toLowerCase()

  let hex = `#${toHex(r)}${toHex(g)}${toHex(b)}`

  // 如果有透明度，添加Alpha通道的十六进制值（00-FF）
  if (a !== null) {
    const alphaHex = Math.round(Math.max(0, Math.min(1, a)) * 255)
      .toString(16)
      .padStart(2, '0')
      .toLowerCase()
    hex += alphaHex
  }

  return hex
}

export function hexToRgba(param) {
  const hex = param.replace('#', '')
  return `rgba(
  ${parseInt(hex.substring(0, 2), 16)},
  ${parseInt(hex.substring(2, 4), 16)},
  ${parseInt(hex.substring(4, 6), 16)},
  ${hex.length === 8 ? parseInt(hex.substring(6, 8), 16) / 255 : 1})`
}
